package com.sheepjin.design_pattern.结合使用设计模式.策略_工厂.entity;

import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.sheepjin.design_pattern.结合使用设计模式.策略_工厂.intf.StrategyIntf;

import java.util.HashMap;
import java.util.Map;

/**
 * @author： SheepJin
 * @date： 2022/6/5 - 21:24
 * @description： 工厂模式的应用，策略工厂：用来初始化所有策略和获取策略
 * @modifiedBy：
 */
public class BusinessFactory{

    /**
     * 策略缓存
     */
    public static Map<String, StrategyIntf> strategyLookup = new HashMap<>();

    /**
     * 通过业务名称获取具体策略
     * @param businessName 业务名称
     * @return 策略
     */
    public static StrategyIntf getStrategyByBusiName(String businessName) {
        return strategyLookup.get(businessName);
    }

    /**
     * 策略注册器
     * @param busiName 业务名称
     * @param strategy 策略
     */
    public static void registrar(String busiName,StrategyIntf strategy){
        if (StrUtil.isBlank(busiName) || ObjectUtil.isNull(strategy)){
            return;
        }
        strategyLookup.put(busiName,strategy);
    }
}
